package com.heima.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.heima.mapper.ProductMapper;
import com.heima.pojo.dto.SkuClassQueryDTO;
import com.heima.pojo.entity.SkuClass;
import com.heima.pojo.vo.SkuClassPageVO;
import com.heima.pojo.vo.SkuVO;
import com.heima.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

@Service
public class ProductServiceImpl implements ProductService {
    @Autowired
    private ProductMapper productMapper;

    @Override
    public boolean addSkuClass(SkuClassQueryDTO skuClassQueryDTO) {
        // 添加空值检查，避免 NullPointerException
        // 先检查名称是否已存在
        SkuClassQueryDTO checkDTO = new SkuClassQueryDTO();
        checkDTO.setClassName(skuClassQueryDTO.getClassName());
        List<SkuClass> existingRecords = productMapper.search(checkDTO);

        if (existingRecords != null && !existingRecords.isEmpty()) {
            throw new RuntimeException("商品类型名称已存在");
        }
        Integer result = productMapper.addSkuClass(skuClassQueryDTO);

        return result != null && result > 0;

    }

    @Override
    public SkuClassPageVO search(SkuClassQueryDTO skuClassQueryDTO) {
        int pageIndex = skuClassQueryDTO.getPageIndex() < 1 ? 1 : skuClassQueryDTO.getPageIndex();
        int pageSize = skuClassQueryDTO.getPageSize() < 1 ? 10 : skuClassQueryDTO.getPageSize();

        Page<SkuClass> page = PageHelper.startPage(skuClassQueryDTO.getPageIndex(), skuClassQueryDTO.getPageSize());
        List<SkuClass> records=productMapper.search(skuClassQueryDTO);
        // 将List<SkuClass>转换为List<SkuVO>
        SkuClassPageVO pageVO  = new SkuClassPageVO();
        pageVO.setPageIndex(pageIndex);
        pageVO.setPageSize(pageSize);
        pageVO.setTotalCount(page.getTotal()); // 总记录数
        pageVO.setTotalPage(page.getPages());  // 总页数
        pageVO.setCurrentPageRecords(records); // 当前页数据
        return pageVO;
    }

    @Override
    public SkuClass getskuClassById(String classId) {
        int i = Integer.parseInt(classId);

        return   productMapper.getskuClassById(i);

    }

    @Override
    public boolean updateSkuClass(String classId, SkuClass skuClass) {
       int i = Integer.parseInt(classId);
        return productMapper.updateSkuClass(i,skuClass) > 0;

    }

    @Override
    public void deleteSkuClass(String classId) {
        int i = Integer.parseInt(classId);
        productMapper.deleteSkuClass(i);

    }


}
